https://www.docker.com/products/docker-desktop/
Ref:Docker官方文章
Docker 是 client-server 模式在溝通,Client 端會和 Docker Daemon 發 Requests,Docker Daemon 會依照不同需求和 Image / Container 溝通,或是從遠端的 Registry 拉 Image 下來,處理後再回傳結果給 Client 端,所以執行前要先啟動 Docker Desktop,後續要直接在 App 當中操作或是下指令都可以。
通常在建立python環境時,因為要安裝的library很多,所以都會用 requirements.txt來記錄安裝的內容和版本,這次就先安裝個 requests
來當作範例,Requests 應該算很常見的 Python 模組,負責處理 HTTP 的溝通
requests==2.31.0
將測試的 code 放到 test.py 當中
import requests
print(requests.__version__)
Dockerfile 的檔案名稱就是 Dockerfile
記得 D 要大寫,然後貼上下方內容
FROM python:3.9-alpine
WORKDIR /usr/src/app
COPY requirements.txt .
COPY test.py .
RUN pip install -r requirements.txt
CMD [ "python", "./test.py"]
FROM: 放入基底映像檔資訊,注意 Dockerfile 第一條指令必須為 FROM 指令
WORKDIR: 設定專案的工作目錄
COPY: 複製檔案到專案裡面
RUN: 執行pip安裝
CMD: 在容器中要執行的command
docker build 會讀取路徑下的 Dockerfile,並將所有內容發送給 Docker 伺服端,由伺服端來建立映像檔。
docker build -t python-env .
我們用 docker build 建立 Image 文件,名稱就叫做 python-env,後面的.
就是代表要建立在當前目錄
注意在執行之前,要先打開 Docker Desktop,這樣才能和 Docker Daemon 溝通。
docker image ls
列出當前所有的imageREPOSITORY TAG IMAGE ID CREATED SIZE
python-env latest 72812913fd45 10 seconds ago 57.4MB
使用 docker run 就能夠把運行環境跑起來
docker run python-env
docker ps -a
-a 可以列出所有的容器,包含停止的容器
指令 | 用途 |
---|---|
docker rmi <image_id> | 移除映像檔 |
docker stop <container_id> | 停止容器 |
docker start <container_id> | 開始容器 |
docker restart <container_id> | 重啟,先停止再開始容器 |
docker rm <container_id> | 移除暫停的容器 |
今天不知道為什麼,整個 Markdown 都很卡,我的電腦也是,之後會把執行過程的截圖補上來,應該還有Python的程式範例執行,明天會直接開始裝 airflow 的 docker-compose 了,用 docker-compose 安裝也是官方建議的方式